Component studio.extensions.easyshare
In bundle easyshare
Contributions
- studio.extensions.easyshare--types
- studio.extensions.easyshare--doctype
- studio.extensions.easyshare--schema
- studio.extensions.easyshare--filters
- studio.extensions.easyshare--widgettypes
- studio.extensions.easyshare--actions
- studio.extensions.easyshare--notifications
- studio.extensions.easyshare--templates
- studio.extensions.easyshare--typeFilter
- studio.extensions.easyshare--chains
- studio.extensions.easyshare--versioningRules
- studio.extensions.easyshare--layouts
XML Source
<?xml version="1.0" encoding="UTF-8"?>
<component name="studio.extensions.easyshare" version="1.0.0">
<require>org.nuxeo.runtime.started</require>
<extension target="org.nuxeo.ecm.core.schema.TypeService" point="schema">
<schema name="easysharefolder" prefix="eshare" src="data/schemas/easysharefolder.xsd"/>
</extension>
<extension target="org.nuxeo.ecm.core.schema.TypeService" point="doctype">
<doctype name="EasyShareFolder" extends="Folder">
<facet name="Collection"/>
<facet name="NotCollectionMember"/>
<schema name="dublincore"/>
<schema name="common"/>
<schema name="easysharefolder"/>
<schema name="uid"/>
</doctype>
</extension>
<extension target="org.nuxeo.ecm.core.lifecycle.LifeCycleService" point="types">
<types>
<type name="EasyShareFolder">default</type>
</types>
</extension>
<extension target="org.nuxeo.ecm.platform.types.TypeService" point="types">
<type id="EasyShareFolder">
<label>EasyShareFolder</label>
<category>Collaborative</category>
<icon>/img/easyshare.png</icon>
<bigIcon>/img/easyshare_100.png</bigIcon>
<description>EasyShareFolder.description</description>
<default-view>view_documents</default-view>
<layouts mode="create">
<layout>layout@EasyShareFolder-edit</layout>
</layouts>
<layouts mode="edit">
<layout>layout@EasyShareFolder-edit</layout>
</layouts>
<layouts mode="view">
<layout>layout@EasyShareFolder-view</layout>
</layouts>
<layouts mode="header">
<layout>layout@EasyShareFolder-header</layout>
</layouts>
<contentViews category="content">
<contentView showInExportView="false">document_content</contentView>
</contentViews>
<contentViews category="trash_content">
<contentView showInExportView="false">document_trash_content</contentView>
</contentViews>
</type>
<type id="Folder">
<subtypes>
<type>EasyShareFolder</type>
</subtypes>
</type>
<type id="Workspace">
<subtypes>
<type>EasyShareFolder</type>
</subtypes>
</type>
</extension>
<extension target="org.nuxeo.ecm.platform.actions.ActionService" point="actions">
<action id="TAB_CONTENT">
<filter-id>denyForEasyShareFolder</filter-id>
</action>
<action id="TAB_VIEW">
<filter-id>denyForEasyShareFolder</filter-id>
</action>
<action id="TAB_RELATIONS">
<filter-id>denyForEasyShareFolder</filter-id>
</action>
</extension>
<extension target="org.nuxeo.ecm.platform.jbpm.core.JbpmService" point="typeFilter">
<type name="EasyShareFolder">
<processDefinition>review_parallel</processDefinition>
<processDefinition>review_approbation</processDefinition>
</type>
</extension>
<extension target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager" point="layouts">
<layout name="layout@EasyShareFolder-edit">
<templates>
<template mode="any">/layouts/easyshare_layout_template.xhtml</template>
</templates>
<rows>
<row>
<properties mode="any">
<property name="nxl_colspan_0">1</property>
</properties>
<widget>title</widget>
</row>
<row>
<properties mode="any">
<property name="nxl_colspan_0">1</property>
</properties>
<widget>description</widget>
</row>
<row>
<properties mode="any">
<property name="nxl_colspan_0">1</property>
</properties>
<widget>expired</widget>
</row>
<row>
<properties mode="any">
<property name="nxl_colspan_0">1</property>
</properties>
<widget>hasNotification</widget>
</row>
<row>
<properties mode="any">
<property name="nxl_colspan_0">1</property>
</properties>
<widget>contactEmail</widget>
</row>
</rows>
<widget name="title" type="text">
<labels>
<label mode="any">label.dublincore.title</label>
</labels>
<translated>true</translated>
<fields>
<field>dc:title</field>
</fields>
<properties widgetMode="edit">
<property name="styleClass">dataInputText</property>
<property name="required">true</property>
</properties>
</widget>
<widget name="description" type="textarea">
<labels>
<label mode="any">label.dublincore.description</label>
</labels>
<helpLabels>
<label mode="any">label.eshare.description.help</label>
</helpLabels>
<translated>true</translated>
<fields>
<field>dc:description</field>
</fields>
<properties widgetMode="edit">
<property name="styleClass">dataInputText</property>
</properties>
</widget>
<widget name="expired" type="datetime">
<labels>
<label mode="any">label.dublincore.expirationDate</label>
</labels>
<helpLabels>
<label mode="any">label.eshare.expirationDate.help</label>
</helpLabels>
<translated>true</translated>
<fields>
<field>dc:expired</field>
</fields>
<properties widgetMode="edit">
<property name="required">true</property>
</properties>
</widget>
<widget name="hasNotification" type="checkbox">
<labels>
<label mode="any">label.eshare.hasNotification</label>
</labels>
<helpLabels>
<label mode="any">label.eshare.hasNotification.help</label>
</helpLabels>
<translated>true</translated>
<fields>
<field>eshare:hasNotification</field>
</fields>
</widget>
<widget name="contactEmail" type="text">
<labels>
<label mode="any">label.eshare.contactEmail</label>
</labels>
<helpLabels>
<label mode="any">label.eshare.contactEmail.help</label>
</helpLabels>
<translated>true</translated>
<fields>
<field>eshare:contactEmail</field>
</fields>
<properties widgetMode="any">
<property name="defaultValue">
#{currentUser.getEmail()}
</property>
</properties>
</widget>
</layout>
<layout name="layout@EasyShareFolder-view">
<templates>
<template mode="any">/layouts/easyshare_layout_template.xhtml</template>
</templates>
<rows>
<row>
<properties mode="any">
<property name="nxl_colspan_0">1</property>
</properties>
<widget>title_and_permlink</widget>
</row>
<row>
<properties mode="any">
<property name="nxl_colspan_0">1</property>
</properties>
<widget>description</widget>
</row>
<row>
<properties mode="any">
<property name="nxl_colspan_0">1</property>
</properties>
<widget>expired</widget>
</row>
<row>
<properties mode="any">
<property name="nxl_colspan_0">1</property>
</properties>
<widget>hasNotification</widget>
</row>
<row>
<properties mode="any">
<property name="nxl_colspan_0">1</property>
</properties>
<widget>contactEmail</widget>
</row>
</rows>
<widget name="title_and_permlink" type="title_and_permlink">
<labels>
<label mode="any">label.eshare.title.permlink</label>
</labels>
<translated>true</translated>
<fields>
<field></field>
<field>uid:major_version</field>
<field>uid:minor_version</field>
</fields>
</widget>
<widget name="description" type="textarea">
<labels>
<label mode="any">label.dublincore.description</label>
</labels>
<translated>true</translated>
<fields>
<field>dc:description</field>
</fields>
</widget>
<widget name="expired" type="datetime">
<labels>
<label mode="any">label.dublincore.expirationDate</label>
</labels>
<translated>true</translated>
<fields>
<field>dc:expired</field>
</fields>
</widget>
<widget name="hasNotfication" type="checkbox">
<labels>
<label mode="any">label.eshare.hasNotfication</label>
</labels>
<helpLabels>
<label mode="any">label.eshare.hasNotification.help</label>
</helpLabels>
<translated>true</translated>
<fields>
<field>eshare:hasNotfication</field>
</fields>
</widget>
<widget name="contactEmail" type="text">
<labels>
<label mode="any">label.eshare.contactEmail</label>
</labels>
<translated>true</translated>
<fields>
<field>eshare:contactEmail</field>
</fields>
</widget>
</layout>
<layout name="layout@EasyShareFolder-header">
<templates>
<template mode="any">/layouts/layout_div_template.xhtml</template>
</templates>
<rows>
<row>
<properties mode="any">
<property name="nxl_colspan_0">3</property>
</properties>
<widget>header_title_and_permlink</widget>
</row>
<row>
<properties mode="any">
<property name="nxl_colspan_0">3</property>
</properties>
<widget>collection_header_description</widget>
</row>
<row>
<properties mode="any">
<property name="nxl_colspan_0">1</property>
<property name="nxl_colspan_1">1</property>
<property name="nxl_colspan_2">1</property>
</properties>
<widget>creator</widget>
<widget>expired</widget>
<widget>contactEmail</widget>
</row>
</rows>
<widget name="collection_header_description" type="textarea">
<fields>
<field>dc:description</field>
</fields>
<labels>
<label mode="any"></label>
</labels>
<properties mode="any">
<property name="styleClass">
currentDocumentDescription quote
</property>
</properties>
</widget>
<widget name="creator" type="text">
<labels>
<label mode="any">label.dublincore.creator</label>
</labels>
<translated>true</translated>
<fields>
<field>dc:creator</field>
</fields>
<properties widgetMode="view">
<property name="title">Creator</property>
<property name="styleClass">detail user headerCreator</property>
</properties>
</widget>
<widget name="expired" type="datetime">
<labels>
<label mode="any">label.dublincore.expirationDate</label>
</labels>
<translated>true</translated>
<fields>
<field>dc:expired</field>
</fields>
<properties widgetMode="view">
<property name="title">Expiration Date</property>
<property name="styleClass">tag label label-light headerExpiration</property>
</properties>
</widget>
<widget name="contactEmail" type="text">
<labels>
<label mode="any">label.eshare.contactEmail</label>
</labels>
<translated>true</translated>
<fields>
<field>eshare:contactEmail</field>
</fields>
<properties widgetMode="view">
<property name="title">Creator's Email</property>
<property name="styleClass">detail tag headerEmail</property>
</properties>
</widget>
</layout>
</extension>
<extension target="org.nuxeo.ecm.core.versioning.VersioningService" point="versioningRules">
<versioningRule typeName="EasyShareFolder">
<initialState major="0" minor="0"/>
<options lifeCycleState="*">
<none default="true"/>
<minor/>
<major/>
</options>
</versioningRule>
</extension>
<extension target="org.nuxeo.ecm.platform.ec.notification.service.NotificationService" point="notifications">
<notification name="easyShareDownload" channel="email"
enabled="true" availableIn="Workspace" autoSubscribed="true"
template="easyShareDownload" subject="EasyShare download notification"
subjectTemplate="easyShareDownloadSubject">
<event name="easyShareDownload"/>
</notification>
<notification name="easyShareExpired" channel="email"
enabled="true" availableIn="Workspace" autoSubscribed="true"
template="easyShareExpired"
subject="EasyShare expired notification"
subjectTemplate="easyShareExpiredSubject">
<event name="easyShareExpired"/>
</notification>
</extension>
<extension target="org.nuxeo.ecm.platform.ec.notification.service.NotificationService" point="templates">
<template name="easyShareDownload" src="templates/easyShareDownload.ftl"/>
<template name="easyShareExpired" src="templates/easyShareExpired.ftl"/>
<template name="easyShareDownloadSubject" src="templates/easyShareDownloadSubject.ftl"/>
<template name="easyShareExpiredSubject" src="templates/easyShareExpiredSubject.ftl"/>
</extension>
<extension target="org.nuxeo.ecm.core.operation.OperationServiceComponent" point="chains">
<chain id="addToAShareDocument">
<operation id="Seam.GetCurrentDocument"/>
<operation id="Context.SetInputAsVar">
<param type="string" name="name">shareDocument</param>
</operation>
<operation id="Context.SetVar">
<param type="string" name="name">shareDocumentPath</param>
<param type="object" name="value">expr:Document.path</param>
</operation>
<operation id="Seam.FetchFromWorklist"/>
<operation id="CreateProxyLive">
<param type="string" name="Destination Path">expr:shareDocumentPath</param>
</operation>
<operation id="Context.RestoreDocumentInput">
<param type="string" name="name">shareDocument</param>
</operation>
<operation id="Audit.Log">
<param type="string" name="event">Documents added to the share</param>
<param type="string" name="category">EasyShareFolderCategory</param>
<param type="string" name="comment">expr:Some documents were added to the share folder @{Document["dc:title"]}</param>
</operation>
<operation id="Seam.Refresh"/>
<operation id="Seam.AddInfoMessage">
<param type="string" name="message">Added</param>
</operation>
</chain>
<chain id="navToParent">
<operation id="Context.FetchDocument"/>
<operation id="Document.GetParent"/>
<operation id="Seam.NavigateTo"/>
</chain>
</extension>
<extension target="org.nuxeo.ecm.platform.actions.ActionService" point="filters">
<filter id="create" append="true">
<rule grant="true">
<permission>AddChildren</permission>
<type>EasyShareFolder</type>
<condition>!document.isImmutable()</condition>
<condition>#{typeManager.getAllowedSubTypes(document.getType(), document).size() > 0}</condition>
</rule>
</filter>
<filter id="denyForEasyShareFolder">
<rule grant="false">
<type>EasyShareFolder</type>
</rule>
</filter>
</extension>
<extension target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager" point="widgettypes">
<documentation>Widget types declared in studio</documentation>
<widgetType name="studio_header">
<configuration>
<title>Header</title>
<description>
The header widget just displays the widget label.
</description>
<supportedModes>
<mode>edit</mode>
<mode>view</mode>
</supportedModes>
<fields>
<list>false</list>
<complex>false</complex>
<supportedTypes/>
<defaultTypes/>
</fields>
<handlingLabels>true</handlingLabels>
<categories>
<category>document</category>
<category>studio</category>
</categories>
<properties>
<layouts mode="any">
<layout name="studio_header_widget_type_properties_any">
<rows>
<row>
<widget>styleClass</widget>
</row>
<row>
<widget>style</widget>
</row>
</rows>
<widget name="styleClass" type="text">
<labels>
<label mode="any">Style class</label>
</labels>
<fields>
<field>styleClass</field>
</fields>
</widget>
<widget name="style" type="text">
<labels>
<label mode="any">Style</label>
</labels>
<fields>
<field>style</field>
</fields>
</widget>
</layout>
</layouts>
</properties>
</configuration>
<handler-class>
org.nuxeo.ecm.platform.forms.layout.facelets.plugins.TemplateWidgetTypeHandler
</handler-class>
<property name="template">
/widgets/studio_header_widget.xhtml
</property>
</widgetType>
<widgetType name="filesList">
<configuration>
<title>Files</title>
<description>
<p>
The Files displays an editable list of files, using javascript to
keep the uploaded file path when adding several files in a row.
</p>
<p>Items are defined using sub wigdets configuration.</p>
<p>
This is actually a template widget type whose template uses a
<nxu:inputList /> tag in edit or create mode, and a table
iterating over items in other modes.
</p>
</description>
<categories>
<category>document</category>
<category>studio</category>
</categories>
<supportedModes>
<mode>edit</mode>
<mode>view</mode>
</supportedModes>
<acceptingSubWidgets>true</acceptingSubWidgets>
<fields>
<list>true</list>
<complex>false</complex>
<supportedTypes>
<type>blob</type>
</supportedTypes>
<defaultTypes>
<type>blob</type>
</defaultTypes>
</fields>
<properties>
<layouts mode="edit">
<layout name="list_widget_type_properties_edit">
<rows>
<row>
<widget>required</widget>
</row>
<row>
<widget>diff</widget>
</row>
</rows>
<widget name="required" type="checkbox">
<labels>
<label mode="any">Required</label>
</labels>
<fields>
<field>required</field>
</fields>
</widget>
<widget name="diff" type="checkbox">
<labels>
<label mode="any">Diff</label>
</labels>
<fields>
<field>diff</field>
</fields>
</widget>
</layout>
</layouts>
</properties>
</configuration>
<handler-class>
org.nuxeo.ecm.platform.forms.layout.facelets.plugins.TemplateWidgetTypeHandler
</handler-class>
<property name="template">/widgets/files_list_widget_template.xhtml
</property>
</widgetType>
</extension>
</component>